#!/bin/zsh
set -eu
umask 077
resources="${0:A:h}"
state="$HOME/Library/Application Support/OSINT Studio"
revision="$(<"$resources/revision")"
release="$state/releases/$revision"
mkdir -p "$state/releases" "$state/cases" "$state/logs"
if [[ ! -d "$release" ]]; then
  digest="$(/usr/bin/shasum -a 256 "$resources/Fieldkit.tar.gz")"
  if [[ "${digest%% *}" != "$revision" ]]; then
    print -u2 'Компоненты приложения повреждены. Установите исправную копию OSINT Studio.'
    exit 1
  fi
  staging="$(mktemp -d "$state/releases/.build.XXXXXXXX")"
  trap '[[ -z "$staging" ]] || /bin/rm -rf "$staging"' EXIT
  /usr/bin/tar -xzf "$resources/Fieldkit.tar.gz" -C "$staging"
  ln -s "$state/cases" "$staging/cases"
  if ln -sh "$staging" "$release" 2>/dev/null; then
    staging=""
  elif [[ ! -d "$release" ]]; then
    exit 1
  fi
fi
if [[ "${1:-}" == "--prepare" ]]; then
 print -r -- "$release"
 exit 0
fi
cd "$release"
export PATH="$PWD/bin:$PWD/.venv/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
export SSL_CERT_FILE="$PWD/runtime/Python.framework/Versions/3.14/lib/python3.14/site-packages/certifi/cacert.pem"
if [[ "${1:-}" == "--test" ]]; then
  exec .venv/bin/python -m unittest discover -s tests -v
fi
.venv/bin/python shell/studio.py </dev/null >>"$state/logs/studio.log" 2>&1 &
